// 基于 localStorage ，封装两个方法

// 次方法，就是用来判断当前值是否是一个引用类型，如果是返回 true
const isObject = target => {
    return typeof target === 'object' && null !== target
}

// 用作存储值
function setStorage(key, value) {
    // 判断，value 是不是一个引用类型
    if (isObject(value)) {
        value = JSON.stringify(value)
    }
    localStorage.setItem(key, value)
}

// 用作获取值
function getStorage(key) {
    // 如果这个值是一个 json格式的类型的字符串的话，我们依旧需要反序列化
    // JSON.parse
    const value = localStorage.getItem(key)
    // value 是不是一个json格式的字符串
    // value -> 'abc' '{"username":"heima"}'
    // 我们可以去捕捉一个错误
    try {
        return JSON.parse(value)
    } catch (error) {
        // 什么时候会执行，就是当try代码块里面出错了，就会执行
        return value
    }
}